#ifndef COURSEINHOUSE_H
#define COURSEINHOUSE_H
#include "Course.h"

class CourseInHouse : public Course
//继承corse大类(父类)，因大类里有各类课程共有的特性（如name和code等），方便分工写代码；
//也是子类课程（室内）的定义，其已经继承了大类course里的一些特性，如name和code等。
{
public:

    CourseInHouse();

    // 既然继承自虚基类Course(也就是内含有virtual f()=0的类)，那么就C++规则在这里强制要求一种"接口-实现"的契约关系，
    // 这种契约关系决定了派生类CourseInHouse必须要复写实现接口registerCourse；否则编译不通过；

    virtual void registerCourse() override;

    // 接口的实现，这里只是声明，但没有定义，需要右键registerCourse选择重构中的在.cpp中添加定义！
    // 那么没有实现的函数怎么运行呢？答案是依赖于继承，复写(override)接口来实现之前的契约。

    QString Building() const;
    void setBuilding(const QString &Building);

    bool usingProjector() const;
    void setUsingProjector(bool usingProjector);

private:

    QString Building_;
    bool usingProjector_;

};

#endif // COURSEINHOUSE_H
